#include "Server.h"

int main(int argc, char const *argv[])
{
    //判断输入是否正确
    if (argc != 3)
    {
        printf("输入的格式错误 %s ip port\n", argv[0]);
        exit(1);
    }
    
    //初始化TCP服务器
    int sock = tcp_server_init(argv[1],atoi(argv[2]));

    //声明线程号
    pthread_t tid_recv;
    pthread_t tid_send;
    
    //创建线程
    pthread_create(&tid_recv , NULL , pthread_recv , (void *)&sock);
    pthread_create(&tid_send , NULL , pthread_send , (void *)&sock);
    
    //等待线程结束
    pthread_join(tid_recv , NULL);
    pthread_join(tid_send , NULL);

    //当接收线程结束时 发送线程如何结束
    //方法一 让发送线程为分离态
    //pthread_join(tid_recv , NULL);
    //pthread_detach(tid_send);
    //printf("服务器结束\n");
    
    //方法二 获取线程返回值 然后判断是否为断开连接 如果是则终止发送线程
    //获取 接收线程的返回值

    void * rect_return_ptr = NULL;
    pthread_join(tid_recv , &rect_return_ptr);
    int rect_return_val = *((int *)rect_return_ptr);

    if (1 == rect_return_val)
    {
        printf("发送线程结束");
        pthread_cancel(tid_send);
    }
    
    printf("服务器结束\n");

    //关闭服务器
    tcp_server_close();
    return 0;
}